package com.thomas.thread;

import java.util.ArrayList;
import java.util.List;

/**   
* @Description: TODO(用一句话描述该文件做什么) 
* @author thomas_liu  
* @date 2018年5月11日 下午11:16:29 
* @version V1.0   
*/
public class EventSource<T> {

	private final List<T> eventListeners ;

	public EventSource() {
		super();
		eventListeners = new ArrayList<T>();
	}
	
	public synchronized void registerListener(T eventListener){
		this.eventListeners.add(eventListener);
		this.notifyAll();
	}
	
	
	public synchronized List<T> retrieveListeners() throws InterruptedException {
		List<T> dest = null;
		if(eventListeners.size() <0){
			this.wait();
		}
		dest = new ArrayList<T>(eventListeners.size());
		dest.addAll(eventListeners);
		return dest;
	}
	
	
	
	
	
	
}
